package com.chuji.crmcj.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ListView;

public class ListViewForScrollView extends ListView {

    /**
     * 事件分发
     */

    boolean is_move = false;
    private int downX;
    private int downY;

    public ListViewForScrollView(Context context) {
        super(context);
    }

    public ListViewForScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ListViewForScrollView(Context context, AttributeSet attrs,
                                 int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    /**
     * 重写该方法，达到使ListView适应ScrollView的效果
     */
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
                MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }

    //
//    @Override
//    public boolean dispatchTouchEvent(MotionEvent ev) {
//        switch (ev.getAction()) {
//            case MotionEvent.ACTION_MOVE:
//                int currentX = (int) ev.getX();
//                int currentY = (int) ev.getY();
//                if (Math.abs(currentX - downX) > Math.abs(currentY - downY)) {
//                    System.out.println("左右滑动");
//                    // 请求父类不要拦截子类
//                    // getParent()获取到父类
//                    // getParent().requestDisallowInterceptTouchEvent(true);
//                    is_move = true;
//                } else {
//                    System.out.println("上下滑动");
//                    // getParent().requestDisallowInterceptTouchEvent(false);
//                    is_move = false;
//                }
//                break;
//            case MotionEvent.ACTION_DOWN:
//                downX = (int) ev.getX();
//                downY = (int) ev.getY();
//                is_move = false;
//                break;
//            case MotionEvent.ACTION_UP:
//                break;
//        }
//        getParent().getParent().requestDisallowInterceptTouchEvent(!is_move);
//        return super.dispatchTouchEvent(ev);
//    }
//
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            case MotionEvent.ACTION_MOVE:
                int currentX = (int) ev.getX();
                int currentY = (int) ev.getY();
                if (Math.abs(currentX - downX) > Math.abs(currentY - downY)) {
//                    System.out.println("左右滑动");
//                    // 请求父类不要拦截子类
//                    // getParent()获取到父类
//                    // getParent().requestDisallowInterceptTouchEvent(true);
//                    is_move = true;
                } else {
                    System.out.println("上下滑动");
                    setParentScrollAble(true);
                }
                break;
        }
        return super.onInterceptTouchEvent(ev);
    }

    /**
     * 是否把滚动事件交给父scrollview
     *
     * @param flag
     */
    private void setParentScrollAble(boolean flag) {
//        while ((parent=child.getParent()) != this) {
//            if (parent == null || !(parent instanceof View)) {
//                return null;
//            }
//            child = (View)parent;
//        }
//        return infoForChild(child);
        getParent().getParent().getParent().requestDisallowInterceptTouchEvent(!flag);//这里的parentScrollView就是listview外面的那个scrollview
    }
}